<?php 
namespace Admin\Controller;
use \Think\Controller;

class AdminController extends PublicController
{
	public function __construct()
	{
		parent::__construct();
		$this->assign('title','用户管理');
	}

	// 默认方法,显示页面管理员列表
	public function index()
	{
		// 得到分页查询的条件
		$map = array();
		if (!empty($_GET['adname'])) {
			$map['adname'] = array('LIKE',"%{$_GET['adname']}%");
		}
		foreach($map as $key=>$val) {
			$Page->parameter[$key] = urlencode($val);
		}


		$user = M('adminuser');
		// $userlist = $user->select();
		$count = $user->where($map)->count();// 查询满足要求的总记录数
		$Page = new \Think\Page($count,5);// 实例化分页类 传入总记录数和每页显示的记录数(25)

		// 进行分页数据查询 注意limit方法的参数要使用Page类的属性
		$userlist = $user->where($map)->limit($Page->firstRow.','.$Page->listRows)->select();


		$show = $Page->show();// 分页显示输出

		$this->assign('page',$show);// 赋值分页输出

		$this->assign('adminlist',$userlist);
		$this->assign('locat','后台用户列表');
		$this->display('Admin/index');

	}

	// 删除用户
	public function del()
	{
		$user = M('adminuser');
		$where['aduid'] = $_GET['aduid'];
		$result = $user->where($where)->delete();

		// 删除用户时同时删除其被分配的角色
		$user_role = M('user_role');
		$map['aduid'] = $_GET['aduid'];
		// 避免误操作还没分配角色,先查是否有角色
		if ($user_role->where($map)->select()) {
			$user_role->where($map)->delete();
		}

		if($result > 0){
			$this->success('删除成功');
		}else{
			$this->error('删除失败');
			exit;
		}
		
	}

	// 编辑用户信息
	public function edit()
	{
		$user = M('adminuser');
		$id = I('get.aduid');
		$where['aduid'] = $id;
		$userdata = $user->where($where)->find();

		$this->assign('locat','编辑用户');
		$this->assign('userlist',$userdata);
		$this->display('Admin/edit');
		
	}

	// 保存编辑
	public function update()
	{
		$user = M('adminuser');

		// 检测修改的用户名是否存在
		$map['adname'] = array('eq',"{$_POST['adname']}");
		$map['aduid'] = array('neq',"{$_POST['aduid']}");
		if($user->where($map)->select()){
			$this->error('更改的用户名已存在!');
			exit;
		}

		// 执行修改操作
		$aduid = I('post.aduid');
		$user->create();
		$result = $user->save();
		if ($result == 1) {
			$this->success('修改成功!','index');
		}else if($result === false){
			$this->error('修改失败...');
			exit;
		}else{
			$this->error('您没有进行任何修改!');
			exit;
		}
	}

	// 添加管理员
	public function add()
	{
		$this->assign('locat','添加用户');
		$this->display('Admin/add');
	}
	// 执行添加
	public function insert()
	{
		$user = M('adminuser');

		// 检测用户名是否存在
		$where['adname'] = $_POST['adname'];
		if ($user->where($where)->find()) {
			$this->error('该用户名已存在!');
			exit;
		}

		// 执行添加操作
		$_POST['adpassword'] = md5($_POST['adpassword']);
		$user->create();
		if ($user->add()) {
			$this->success('添加成功!','index');
		}else{
			$this->error('添加失败!');
			exit;
		}
	}

	// 为用户分配角色
	public function user_role()
	{
		// 查询所有角色列表
		$role = M('role');
		$rolelist = $role->select();
		$this->assign('rolelist',$rolelist);

		// 查询当前用户对应的角色
		$user_role = M('user_role');
		$where['aduid'] = $_GET['aduid'];
		// 根据管理员ID查出所有其对应的角色--getField() 
		$user_role_data = $user_role->where($where)->getField('roleid',true);
		$this->assign('user_role',$user_role_data);

		// 查询当前用户
		$user = M('adminuser');
		$where['aduid'] = $_GET['aduid'];
		$userdata = $user->where($where)->find();

		$this->assign('userdata',$userdata);


		$this->assign('locat','分配角色');
		$this->display('Role/rolelist');
	}

	// 执行给用户分配权限操作
	public function save_user_role()
	{
		if (empty($_POST)) {
			$this->error('请至少选择一项!');
			exit;
		}
		$user_role = M('user_role');
		$aduid = $_GET['aduid'];
		$where['aduid'] = $aduid;
		// 删除用户原先的数据,为了防止重复添加
		$user_role->where($where)->delete();

		foreach ($_POST as $k => $v) {
			$data['aduid'] = $_GET['aduid'];
			$data['roleid'] = $v;
			$user_role->data($data)->add();
		}

		$this->success('添加成功',U('Admin/index'));
	}

	// 执行禁用某用户
	public function stop()
	{
		$user = M('adminuser');
		$id = I('get.aduid');
		$where['aduid'] = $id;
		$userInfo = $user->where($where)->find();
		if ($userInfo['status'] == '1') {

			// 这里不知为什么使用save或setField均失败
			// $Model = new \Think\Model();
			// $sql = "update bbs_adminuser set status='0' where aduid={$id}";
			// $result = $Model->execute($sql);

			// 清除缓存后可以使用save
			$data['status'] = '0';
			$result = $user->where($where)->save($data);
			if($result){
				$this->success('操作成功!',U('Admin/index'));
			}else{
				$this->error('操作失败...');
			}

		}else if($userInfo['status'] == '0'){
			$Model = new \Think\Model();
			$sql = "update bbs_adminuser set status='1' where aduid={$id}";
			$result = $Model->execute($sql);
			if($result){
				$this->success('操作成功!',U('Admin/index'));
			}else{
				$this->error('操作失败...');
			}
		}
	}

	// 用户详情 包括最近一次操作IP等内容
	public function detail()
	{
		echo get_client_ip();
	}
}
